TSTP Solution File: PUZ081^2 by cvc5---1.0.5

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : cvc5---1.0.5
% Problem  : PUZ081^2 : TPTP v8.1.2. Bugfixed v7.1.0.
% Transfm  : none
% Format   : tptp
% Command  : do_cvc5 %s %d

% Computer : n009.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Thu Aug 31 13:13:18 EDT 2023

% Result   : Theorem 0.20s 0.53s
% Output   : Proof 0.20s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.07/0.13  % Problem    : PUZ081^2 : TPTP v8.1.2. Bugfixed v7.1.0.
% 0.07/0.14  % Command    : do_cvc5 %s %d
% 0.14/0.35  % Computer : n009.cluster.edu
% 0.14/0.35  % Model    : x86_64 x86_64
% 0.14/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.35  % Memory   : 8042.1875MB
% 0.14/0.35  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.35  % CPULimit   : 300
% 0.14/0.35  % WCLimit    : 300
% 0.14/0.35  % DateTime   : Sat Aug 26 22:05:35 EDT 2023
% 0.14/0.35  % CPUTime    : 
% 0.20/0.49  %----Proving TH0
% 0.20/0.50  %------------------------------------------------------------------------------
% 0.20/0.50  % File     : PUZ081^2 : TPTP v8.1.2. Bugfixed v7.1.0.
% 0.20/0.50  % Domain   : Puzzles
% 0.20/0.50  % Problem  : 1 of http://philosophy.hku.hk/think/logic/knight.php
% 0.20/0.50  % Version  : Especial.
% 0.20/0.50  % English  : A very special island is inhabited only by knights and knaves.
% 0.20/0.50  %            Knights always tell the truth, and knaves always lie. You meet two
% 0.20/0.50  %            inhabitants: Zoey and Mel. Zoey tells you that Mel is a knave. Mel
% 0.20/0.50  %            says, `Neither Zoey nor I are knaves'. Who is a knight and who is
% 0.20/0.50  %            a knave?
% 0.20/0.50  
% 0.20/0.50  % Refs     :
% 0.20/0.50  % Source   : [TPTP]
% 0.20/0.50  % Names    :
% 0.20/0.50  
% 0.20/0.50  % Status   : Theorem
% 0.20/0.50  % Rating   : 0.15 v8.1.0, 0.09 v7.5.0, 0.14 v7.4.0, 0.22 v7.2.0, 0.12 v7.1.0
% 0.20/0.50  % Syntax   : Number of formulae    :   11 (   0 unt;   5 typ;   0 def)
% 0.20/0.50  %            Number of atoms       :   19 (   4 equ;   0 cnn)
% 0.20/0.50  %            Maximal formula atoms :    4 (   3 avg)
% 0.20/0.50  %            Number of connectives :   31 (   3   ~;   2   |;   6   &;  17   @)
% 0.20/0.50  %                                         (   0 <=>;   2  =>;   0  <=;   1 <~>)
% 0.20/0.50  %            Maximal formula depth :    7 (   6 avg)
% 0.20/0.50  %            Number of types       :    2 (   0 usr)
% 0.20/0.50  %            Number of type conns  :    6 (   6   >;   0   *;   0   +;   0  <<)
% 0.20/0.50  %            Number of symbols     :    6 (   5 usr;   2 con; 0-2 aty)
% 0.20/0.50  %            Number of variables   :    7 (   0   ^;   5   !;   2   ?;   7   :)
% 0.20/0.50  % SPC      : TH0_THM_EQU_NAR
% 0.20/0.50  
% 0.20/0.50  % Comments : See http://philosophy.hku.hk/think/logic/knight.php
% 0.20/0.50  %          : This version finds the types of Zoey and Mel
% 0.20/0.50  % Bugfixes : v7.1.0 - Fixed the conjecture.
% 0.20/0.50  %------------------------------------------------------------------------------
% 0.20/0.50  %----Type declarations
% 0.20/0.50  thf(mel_type,type,
% 0.20/0.50      mel: $i ).
% 0.20/0.50  
% 0.20/0.50  thf(zoey_type,type,
% 0.20/0.50      zoey: $i ).
% 0.20/0.50  
% 0.20/0.50  thf(knight_type,type,
% 0.20/0.50      knight: $i > $o ).
% 0.20/0.50  
% 0.20/0.50  thf(knave_type,type,
% 0.20/0.50      knave: $i > $o ).
% 0.20/0.50  
% 0.20/0.50  thf(says_type,type,
% 0.20/0.50      says: $i > $o > $o ).
% 0.20/0.50  
% 0.20/0.50  %----A very special island is inhabited only by knights and knaves.
% 0.20/0.50  thf(knights_xor_knaves,axiom,
% 0.20/0.50      ! [P: $i] :
% 0.20/0.50        ( ( knight @ P )
% 0.20/0.50      <~> ( knave @ P ) ) ).
% 0.20/0.50  
% 0.20/0.50  %----Knights always tell the truth
% 0.20/0.50  thf(knights_tell_truth,axiom,
% 0.20/0.50      ! [P: $i,S: $o] :
% 0.20/0.50        ( ( ( knight @ P )
% 0.20/0.50          & ( says @ P @ S ) )
% 0.20/0.50       => S ) ).
% 0.20/0.50  
% 0.20/0.50  %----Knaves always lie
% 0.20/0.50  thf(knaves_lie,axiom,
% 0.20/0.50      ! [P: $i,S: $o] :
% 0.20/0.50        ( ( ( knave @ P )
% 0.20/0.50          & ( says @ P @ S ) )
% 0.20/0.50       => ~ S ) ).
% 0.20/0.50  
% 0.20/0.50  %----Zoey says 'Mel is a knave'
% 0.20/0.50  thf(zoey_speaks,axiom,
% 0.20/0.50      says @ zoey @ ( knave @ mel ) ).
% 0.20/0.50  
% 0.20/0.50  %----Mel says 'Neither Zoey nor I are knaves.'
% 0.20/0.50  thf(mel_speaks,axiom,
% 0.20/0.50      ( says @ mel
% 0.20/0.50      @ ( ~ ( knave @ zoey )
% 0.20/0.50        & ~ ( knave @ mel ) ) ) ).
% 0.20/0.50  
% 0.20/0.50  %----What are Zoey and Mel
% 0.20/0.50  thf(what_are_zoey_and_mel,conjecture,
% 0.20/0.50      ? [TZ: $i > $o,TM: $i > $o] :
% 0.20/0.50        ( ( ( TZ = knight )
% 0.20/0.50          | ( TZ = knave ) )
% 0.20/0.50        & ( ( TM = knight )
% 0.20/0.50          | ( TM = knave ) )
% 0.20/0.50        & ( TZ @ zoey )
% 0.20/0.50        & ( TM @ mel ) ) ).
% 0.20/0.50  
% 0.20/0.50  %------------------------------------------------------------------------------
% 0.20/0.50  ------- convert to smt2 : /export/starexec/sandbox/tmp/tmp.mFxqyCzzri/cvc5---1.0.5_29679.p...
% 0.20/0.50  (declare-sort $$unsorted 0)
% 0.20/0.50  (declare-fun tptp.mel () $$unsorted)
% 0.20/0.50  (declare-fun tptp.zoey () $$unsorted)
% 0.20/0.50  (declare-fun tptp.knight ($$unsorted) Bool)
% 0.20/0.50  (declare-fun tptp.knave ($$unsorted) Bool)
% 0.20/0.50  (declare-fun tptp.says ($$unsorted Bool) Bool)
% 0.20/0.50  (assert (forall ((P $$unsorted)) (xor (@ tptp.knight P) (@ tptp.knave P))))
% 0.20/0.50  (assert (forall ((P $$unsorted) (S Bool)) (=> (and (@ tptp.knight P) (@ (@ tptp.says P) S)) S)))
% 0.20/0.50  (assert (forall ((P $$unsorted) (S Bool)) (=> (and (@ tptp.knave P) (@ (@ tptp.says P) S)) (not S))))
% 0.20/0.50  (assert (@ (@ tptp.says tptp.zoey) (@ tptp.knave tptp.mel)))
% 0.20/0.50  (assert (@ (@ tptp.says tptp.mel) (and (not (@ tptp.knave tptp.zoey)) (not (@ tptp.knave tptp.mel)))))
% 0.20/0.50  (assert (not (exists ((TZ (-> $$unsorted Bool)) (TM (-> $$unsorted Bool))) (and (or (= TZ tptp.knight) (= TZ tptp.knave)) (or (= TM tptp.knight) (= TM tptp.knave)) (@ TZ tptp.zoey) (@ TM tptp.mel)))))
% 0.20/0.50  (set-info :filename cvc5---1.0.5_29679)
% 0.20/0.50  (check-sat-assuming ( true ))
% 0.20/0.50  ------- get file name : TPTP file name is PUZ081^2
% 0.20/0.50  ------- cvc5-thf : /export/starexec/sandbox/solver/bin/cvc5---1.0.5_29679.smt2...
% 0.20/0.53  --- Run --ho-elim --full-saturate-quant at 10...
% 0.20/0.53  % SZS status Theorem for PUZ081^2
% 0.20/0.53  % SZS output start Proof for PUZ081^2
% 0.20/0.53  (
% 0.20/0.53  (let ((_let_1 (not (exists ((TZ (-> $$unsorted Bool)) (TM (-> $$unsorted Bool))) (and (or (= TZ tptp.knight) (= TZ tptp.knave)) (or (= TM tptp.knight) (= TM tptp.knave)) (@ TZ tptp.zoey) (@ TM tptp.mel)))))) (let ((_let_2 (@ tptp.knave tptp.mel))) (let ((_let_3 (not _let_2))) (let ((_let_4 (not (@ tptp.knave tptp.zoey)))) (let ((_let_5 (forall ((P $$unsorted)) (xor (@ tptp.knight P) (@ tptp.knave P))))) (let ((_let_6 (forall ((P $$unsorted)) (= (not (ho_3 k_2 P)) (ho_3 k_4 P))))) (let ((_let_7 (ho_3 k_2 tptp.mel))) (let ((_let_8 (not _let_7))) (let ((_let_9 (ho_3 k_4 tptp.mel))) (let ((_let_10 (= _let_9 _let_8))) (let ((_let_11 (forall ((u |u_(-> $$unsorted Bool)|) (e Bool) (i $$unsorted)) (not (forall ((v |u_(-> $$unsorted Bool)|)) (not (forall ((ii $$unsorted)) (= (ho_3 v ii) (ite (= i ii) e (ho_3 u ii)))))))))) (let ((_let_12 (forall ((x |u_(-> $$unsorted Bool)|) (y |u_(-> $$unsorted Bool)|)) (or (not (forall ((z $$unsorted)) (= (ho_3 x z) (ho_3 y z)))) (= x y))))) (let ((_let_13 (forall ((u |u_(-> Bool Bool)|) (e Bool) (i Bool)) (not (forall ((v |u_(-> Bool Bool)|)) (not (forall ((ii Bool)) (= (ho_7 v ii) (ite (= i ii) e (ho_7 u ii)))))))))) (let ((_let_14 (forall ((x |u_(-> Bool Bool)|) (y |u_(-> Bool Bool)|)) (or (not (forall ((z Bool)) (= (ho_7 x z) (ho_7 y z)))) (= x y))))) (let ((_let_15 (forall ((u |u_(-> $$unsorted Bool Bool)|) (e |u_(-> Bool Bool)|) (i $$unsorted)) (not (forall ((v |u_(-> $$unsorted Bool Bool)|)) (not (forall ((ii $$unsorted)) (= (ho_6 v ii) (ite (= i ii) e (ho_6 u ii)))))))))) (let ((_let_16 (forall ((x |u_(-> $$unsorted Bool Bool)|) (y |u_(-> $$unsorted Bool Bool)|)) (or (not (forall ((z $$unsorted)) (= (ho_6 x z) (ho_6 y z)))) (= x y))))) (let ((_let_17 (EQ_RESOLVE (ASSUME :args (_let_5)) (TRANS (MACRO_SR_EQ_INTRO :args (_let_5 SB_DEFAULT SBA_FIXPOINT)) (PREPROCESS :args ((= (forall ((P $$unsorted)) (= (@ tptp.knave P) (not (@ tptp.knight P)))) _let_6))))))) (let ((_let_18 (AND_ELIM (MACRO_SR_PRED_TRANSFORM (AND_INTRO _let_17 (PREPROCESS :args ((and _let_16 _let_15 _let_14 _let_13 _let_12 _let_11)))) :args ((and _let_6 _let_16 _let_15 _let_14 _let_13 _let_12 _let_11))) :args (0)))) (let ((_let_19 (not _let_10))) (let ((_let_20 (not _let_9))) (let ((_let_21 (and _let_8 _let_20))) (let ((_let_22 (ho_3 k_4 tptp.zoey))) (let ((_let_23 (not _let_22))) (let ((_let_24 (ho_3 k_2 tptp.zoey))) (let ((_let_25 (not _let_24))) (let ((_let_26 (and _let_25 _let_23))) (let ((_let_27 (= _let_22 _let_25))) (let ((_let_28 (not _let_26))) (let ((_let_29 (_let_6))) (let ((_let_30 (not _let_27))) (let ((_let_31 (or))) (let ((_let_32 (MACRO_RESOLUTION_TRUST (REORDERING (EQ_RESOLVE (ASSUME :args (_let_1)) (TRANS (MACRO_SR_EQ_INTRO :args (_let_1 SB_DEFAULT SBA_FIXPOINT)) (PREPROCESS :args ((= (or (and (not (@ tptp.knight tptp.zoey)) _let_4) (and (not (@ tptp.knight tptp.mel)) _let_3)) (or _let_26 _let_21)))))) :args ((or _let_21 _let_26))) (MACRO_RESOLUTION_TRUST (REORDERING (EQ_RESOLVE (CNF_EQUIV_POS2 :args (_let_27)) (CONG (REFL :args (_let_30)) (REFL :args (_let_22)) (MACRO_SR_PRED_INTRO :args ((= (not _let_25) _let_24))) :args _let_31)) :args ((or _let_22 _let_24 _let_30))) (MACRO_RESOLUTION_TRUST (IMPLIES_ELIM (MACRO_SR_PRED_ELIM (SCOPE (INSTANTIATE _let_17 :args (tptp.zoey QUANTIFIERS_INST_CBQI_CONFLICT)) :args _let_29))) _let_18 :args (_let_27 false _let_6)) (REORDERING (CNF_AND_POS :args (_let_26 1)) :args ((or _let_23 _let_28))) (REORDERING (CNF_AND_POS :args (_let_26 0)) :args ((or _let_25 _let_28))) :args (_let_28 false _let_27 true _let_22 true _let_24)) :args (_let_21 true _let_26)))) (let ((_let_33 (not _let_21))) (SCOPE (SCOPE (MACRO_RESOLUTION_TRUST (IMPLIES_ELIM (MACRO_SR_PRED_ELIM (SCOPE (INSTANTIATE _let_17 :args (tptp.mel QUANTIFIERS_INST_CBQI_CONFLICT)) :args _let_29))) (MACRO_RESOLUTION_TRUST (REORDERING (EQ_RESOLVE (CNF_EQUIV_POS2 :args (_let_10)) (CONG (REFL :args (_let_19)) (REFL :args (_let_9)) (MACRO_SR_PRED_INTRO :args ((= (not _let_8) _let_7))) :args _let_31)) :args ((or _let_9 _let_7 _let_19))) (MACRO_RESOLUTION_TRUST (REORDERING (CNF_AND_POS :args (_let_21 1)) :args ((or _let_20 _let_33))) _let_32 :args (_let_20 false _let_21)) (MACRO_RESOLUTION_TRUST (REORDERING (CNF_AND_POS :args (_let_21 0)) :args ((or _let_8 _let_33))) _let_32 :args (_let_8 false _let_21)) :args (_let_19 true _let_9 true _let_7)) _let_18 :args (false true _let_10 false _let_6)) :args (_let_5 (forall ((P $$unsorted) (S Bool)) (=> (and (@ tptp.knight P) (@ (@ tptp.says P) S)) S)) (forall ((P $$unsorted) (S Bool)) (=> (and (@ tptp.knave P) (@ (@ tptp.says P) S)) (not S))) (@ (@ tptp.says tptp.zoey) _let_2) (@ (@ tptp.says tptp.mel) (and _let_4 _let_3)) _let_1 true))))))))))))))))))))))))))))))))))))
% 0.20/0.53  )
% 0.20/0.53  % SZS output end Proof for PUZ081^2
% 0.20/0.53  % cvc5---1.0.5 exiting
% 0.20/0.53  % cvc5---1.0.5 exiting
%------------------------------------------------------------------------------